From 98a8c66970872c600a3122c53c4a7680276f069d Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Thu, 13 Nov 2014 01:47:56 +0100 Subject: [PATCH] mir: correctly get screen mm sizes --- gdk/mir/gdkmirscreen.c | 33 +++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/gdk/mir/gdkmirscreen.c b/gdk/mir/gdkmirscreen.c index dedaa021f0..b182d946a4 100644 --- a/gdk/mir/gdkmirscreen.c +++ b/gdk/mir/gdkmirscreen.c @@ -94,6 +94,29 @@ get_screen_size (MirDisplayConfiguration *config, gint *width, gint *height) } } +static void +get_screen_size_mm (MirDisplayConfiguration *config, gint *width, gint *height) +{ + uint32_t i; + + *width = 0; + *height = 0; + + if (!config) + return; + + for (i = 0; i < config->num_outputs; i++) + { + MirDisplayOutput *o = &config->outputs[i]; + + if (!o->used) + continue; + + *width += o->physical_width_mm; + *height += o->physical_height_mm; + } +} + static void update_display_config (GdkMirScreen *screen) { @@ -194,16 +217,18 @@ static gint gdk_mir_screen_get_width_mm (GdkScreen *screen) { g_printerr ("gdk_mir_screen_get_width_mm\n"); - // FIXME: A combination of all screens? - return get_output (screen, 0)->physical_width_mm; + gint width, height; + get_screen_size_mm (GDK_MIR_SCREEN (screen)->display_config, &width, &height); + return width; } static gint gdk_mir_screen_get_height_mm (GdkScreen *screen) { g_printerr ("gdk_mir_screen_get_height_mm\n"); - // FIXME: A combination of all screens? - return get_output (screen, 0)->physical_height_mm; + gint width, height; + get_screen_size_mm (GDK_MIR_SCREEN (screen)->display_config, &width, &height); + return height; } static gint -- 2.30.2